﻿Imports SIAVU.Dominio
Imports DevExpress.Web

Namespace Presentacion

    Partial Public Class Maestra
        Inherits System.Web.UI.MasterPage

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If (Session("UsuarioID") Is Nothing) Then
                '//Si el usuario no se logueo o le caduco la sesión lo mando a la página de error y no lo dejo continuar
                Response.Redirect("_NotificacionDeError.aspx")
            Else
                Try
                    If Not Page.IsPostBack Then
                        ConfigurarNavBar()
                    End If

                    '//Por ultimo limpio la session
                    UIManager.LimpiarSesiones(DirectCast(Me.Page, System.Web.UI.Page).AppRelativeVirtualPath)

                Catch ex As Exception
                    Response.Redirect("_NotificacionDeError.aspx")
                End Try
            End If
        End Sub

#Region "Propiedades"

        Public ReadOnly Property RolUsuario()
            Get
                If (Session("ERol") Is Nothing) Then
                    Return 0 '//Desconocido
                Else
                    Return Session("ERol")
                End If
            End Get
        End Property

#End Region

#Region "Eventos"

        Protected Sub bCerrarSesion_Click(ByVal sender As Object, ByVal e As EventArgs)
            Try
                Session("UsuarioID") = Nothing
                'HttpContext.Current.Cache.Remove(HttpContext.Current.User.Identity.Name) VER SI FUNCIONA, ESTO ES SEGURIDAD INTEGRADA
                HttpContext.Current = Nothing
                Session.Abandon()
                Session.Clear()
                Response.Redirect("Login.aspx")

            Catch ex As Exception
                Throw
            End Try
        End Sub

#End Region

#Region "Métodos"

        Private Sub ConfigurarNavBar()
            Try
                SetFuncionesNavBar()
                SetDatosUsuario()
            Catch ex As Exception
                Throw
            End Try
        End Sub

        Private Sub SetFuncionesNavBar()
            Try
                Dim oUsuario As New Usuario
                Dim oGrupoNavBar As ASPxNavBar.NavBarGroup = Nothing
                Dim oItemNavBar As ASPxNavBar.NavBarItem = Nothing
                oUsuario.UsuarioID = Session("UsuarioID")
                oUsuario.getRoles()
                If oUsuario.Roles IsNot Nothing Then
                    For Each oRol As Rol In oUsuario.Roles
                        '//Me guardo el rol del usuario.. si tiene más de uno me quedo con el último
                        '//que tiene más funciones, aunque esto nunca debería de pasar..
                        Session("ERol") = oRol.RolID

                        oGrupoNavBar = New ASPxNavBar.NavBarGroup("Funciones " + oRol.Nombre)
                        oGrupoNavBar.HeaderStyle.Font.Bold = True
                        For Each oPaginaWeb As PaginaWeb In oRol.PaginasWeb
                            oItemNavBar = New ASPxNavBar.NavBarItem
                            oItemNavBar.Text = oPaginaWeb.Descripcion
                            oItemNavBar.NavigateUrl = "~/Presentacion/" + oPaginaWeb.Nombre
                            oItemNavBar.Image.Url = "~/Imagenes/" + oPaginaWeb.Nombre.Split(".")(0) + ".png"

                            oGrupoNavBar.Items.Add(oItemNavBar)
                        Next
                        nbMenuIzquierda.Groups.Add(oGrupoNavBar)
                    Next
                End If

            Catch ex As Exception
                Throw
            End Try
        End Sub

        Private Sub SetDatosUsuario()
            Try
                Dim oUsuario As New Usuario
                oUsuario.getByID(Session("UsuarioID"))
                Dim lUsuarioNombre, lTipoUsuario As ASPxEditors.ASPxLabel
                lUsuarioNombre = nbMenuIzquierda.Groups(0).FindControl("lNombreUsuario")
                lTipoUsuario = nbMenuIzquierda.Groups(0).FindControl("lTipoUsuario")
                lTipoUsuario.Text = Usuario.getDescripcionTipoUsuario(oUsuario.TipoUsuario)
                lUsuarioNombre.Text = oUsuario.NombreCompleto

            Catch ex As Exception
                Throw
            End Try
        End Sub

#End Region

    End Class

End Namespace
